/**
  ******************************************************************************
  * @file    main.c
  * @author  测试1组（houtiezhu）
  * @version v0
  * @date    09-07-2019
  *           
  * @verbatim
  **/
/* Includes ------------------------------------------------------------------*/

#include "define.h"
#include "gpio.h"

uint8  LongKeyCount[5]={0,0,0,0,0};//长按按键
union byte_bit  LongKeyFlag;
uint8  OneKeyFlag;
uint8 	KeyNumber;



//GPIO初始化
void UserGPIO_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	RCC_APBPeriphClockCmd(RCC_APBPeriph_GPIO, ENABLE);//使能GPIO时钟
	GPIO_DeInit();
	//PT0
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_IN;//选择输入或输出
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_UP;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_WEAK;
	GPIO_Init(GPIO0, &GPIO_InitStruct);
	//GPIO_Pin_0 & GPIO_Pin_1 as oxsc1;32768
	//GPIO_ADModeSet(GPIO0,GPIO_Pin_0 | GPIO_Pin_1);//D or A port
	//GPIO_ADModeSet(GPIO0,GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 );//key02~06
	
	//PT1
	GPIO_WriteOutputData(GPIO1,0x13);
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_2 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_IN;//选择输入或输出
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_UP;//选择开启上拉 GPIO_PuPd_NOPULL;
	//GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;//GPIO_PTSR_WEAK
	GPIO_Init(GPIO1, &GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//选择输入或输出
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO1, &GPIO_InitStruct);
	//GPIO_WriteOutputData(GPIO1,0x13);
	//GPIO_ADModeSet(GPIO_Pin_All);//as D port
	
	//PT2
	/*GPIO_WriteOutputData(GPIO2,0);
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_WEAK;
	GPIO_Init(GPIO2, &GPIO_InitStruct);*/
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_7 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_IN;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;  //BUSY 
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO2, &GPIO_InitStruct);
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_5 | GPIO_Pin_6 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_IN;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_UP;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_Init(GPIO2, &GPIO_InitStruct);
	//GPIO_ADModeSet(GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//as D port
	
	//PT3
	/*GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_All; //seg
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO3, &GPIO_InitStruct);
	
	//PT4
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_All; //seg
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO4, &GPIO_InitStruct);
	
	//PT5
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_All; //seg
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO5, &GPIO_InitStruct);
	
	//PT6
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_All; //seg
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO6, &GPIO_InitStruct);
	*/
	//PT7
	/*GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; //seg
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO7, &GPIO_InitStruct);*/
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_0 | GPIO_Pin_1; //
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO7, &GPIO_InitStruct);
	
	//PT8
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_3 ; //
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//GPIO_Mode_IN
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_STRONG;
	GPIO_Init(GPIO8, &GPIO_InitStruct);
    
    //#if 22 A6和A7的gpio选择模拟
    GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_0|GPIO_Pin_1; //
    GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_AN;//
    GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//
    GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_WEAK;
    GPIO_Init(GPIO8, &GPIO_InitStruct); //A7开启模拟口

//	BT_POWER_On;
	LedOn;
	OutGreenOn;
	//GPIO_AnalogyIOSet(A5PD | A6PD | A7PD,ENABLE);//
	//GPIO_ADModeSet(GPIO8,GPIO_Pin_3);//as D port
}



void SetMEMOUT(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	GPIO_DeInit();
	//PT0
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_3 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_OUT;//选择输入或输出
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_WEAK;
	GPIO_Init(GPIO0, &GPIO_InitStruct);
}


void GPIO_Stopmode(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	UserGPIO_Init();
	GPIO_WriteOutputDataBit(GPIO1,GPIO_Pin_4,Bit_SET);//BT_POWER_Off
	LedOff;
	OutGreenOff;
	OutRedOff;
	
	/*
	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_2 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_IN;//选择输入或输出
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_WEAK;//GPIO_PTSR_WEAK
	GPIO_Init(GPIO1, &GPIO_InitStruct);

	GPIO_InitStruct.GPIO_Pin 		=	GPIO_Pin_3 ; //GPIO_Pin_All
	GPIO_InitStruct.GPIO_Mode 		=	GPIO_Mode_IN;//选择输入或输出
	GPIO_InitStruct.GPIO_PuPd 		=	GPIO_PuPd_NOPULL;//选择开启上拉 GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_PTSR	 	=	GPIO_PTSR_WEAK;//GPIO_PTSR_WEAK
	GPIO_Init(GPIO1, &GPIO_InitStruct);*/
	
	
	//XOSCT1 pin set
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AN;
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
	GPIO_InitStruct.GPIO_PTSR=GPIO_PTSR_WEAK;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
	//RCC_APBPeriphClockCmd(RCC_APBPeriph_GPIO,ENABLE);
	GPIO_Init(GPIO0, &GPIO_InitStruct);    //设置P0  睡眠时的设置
	
}




